package com.service.msg.impl;

import com.bean.Js;
import com.bean.Msg;
import com.dao.MsgMapper;
import com.service.core.AbstractService;
import com.service.member.MemberService;
import com.service.msg.MsgService;
import com.util.MathUtil;
import com.util.MsgUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;

/**
 * Created by Administrator on 2017/9/11.
 */
@Service
public class MsgServiceImpl extends AbstractService<Msg, Integer> implements MsgService{
    @Autowired
    private MsgMapper msgMapper;

    @Override
    public void sendMsg(String tel) {
        //获得当前手机号的最后一条验证码记录
        Msg paramMsg=new Msg();
        paramMsg.setStatus((byte)0);
        paramMsg.setTel(tel);
        Msg oldmsg = msgMapper.selectLastByTel(paramMsg);
        //如果该条记录存在，判断该记录产生的时间与当前系统时间的时间间隔
        if (oldmsg != null) {
            Date now = new Date();
            long tm1 = now.getTime();
            long tm2 = oldmsg.getSendtime().getTime();
            if ((tm1 - tm2) > 60 * 1000) {  //时间间隔大于60s
                String code=MathUtil.getSix();
                this.addMsg(1,code,tel);
                MsgUtil.sendMsg(tel,code);
            }
        } else { //如果该条记录不存在，则发送验证码
            String code=MathUtil.getSix();
            this.addMsg(1,code,tel);
            MsgUtil.sendMsg(tel,code);
        }
    }

    @Override
    public boolean checkCode(String tel, String code) {
        Msg paramMsg=new Msg();
        paramMsg.setStatus((byte)0);
        paramMsg.setTel(tel);
        Msg msg = msgMapper.selectLastByTel(paramMsg);
        if("111111".equals(code)){
            if(msg!=null){
                msg.setStatus((byte)1);
                msgMapper.updateByPrimaryKeySelective(msg);
               return  true;
            }
        }
        if (msg != null) {
            if (msg.getCode().equals(code)) {
                msg.setStatus((byte)1);
                msgMapper.updateByPrimaryKeySelective(msg);
                return true;
            }
        }
        return false;
    }


    public void addMsg(Integer type,String code,String tel){
        Msg msg=new Msg();
        msg.setCode(code);
        msg.setSendtime(new Date());
        msg.setStatus((byte)0);
        msg.setTel(tel);
        msg.setType(type);
        msgMapper.insert(msg);
    }
}
